package com.agritech.machine;

import com.agritech.environment.EnvironmentData;
import com.agritech.observer.EnvironmentObserver;

/**
 * 喷药机观察者类
 * 实现环境观察者接口，根据环境数据调整喷药机的工作模式
 */
public class SprayerObserver implements EnvironmentObserver {

    @Override
    public String getObserverName() {
        return "喷药机观察者 (" + sprayer.getId() + ")";
    }
    private Sprayer sprayer;
    
    public SprayerObserver(Sprayer sprayer) {
        this.sprayer = sprayer;
    }
    
    @Override
    public void update(EnvironmentData data) {
        System.out.println("喷药机 " + sprayer.getId() + " 收到环境数据更新:");
        
        // 根据环境数据调整喷药机工作模式
        if (data.getWindSpeed() > 5.0) {
            System.out.println("检测到风速过高 (" + data.getWindSpeed() + "m/s)，暂停喷药作业");
            if (sprayer.isRunning()) {
                sprayer.stop();
            }
        } else if (data.getHumidity() < 30) {
            System.out.println("检测到空气湿度低 (" + data.getHumidity() + "%)，增加喷药量");
            sprayer.adjustSprayRange(sprayer.getSprayRange() + 0.5);
        } else if (data.getCropStatus().equals("缺水")) {
            System.out.println("检测到作物缺水，切换到水肥一体模式");
            sprayer.changePesticideType("水肥混合剂");
        }
    }
}